package com.travel.entity.dto;

import lombok.Builder;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * Dify API请求参数
 * 参考文档: https://docs.dify.ai/v/zh-hans/api-reference/chat-apis
 */
@Data
@Builder
public class AiRequestParam {
    /**
     * 用户标识符
     */
    private String user;
    
    /**
     * 响应模式，支持：
     * blocking - 阻塞模式，等待完整响应
     * streaming - 流式响应模式
     */
    @Builder.Default
    private String response_mode = "blocking";
    
    /**
     * 输入变量，根据应用中定义的变量设置
     */
    private Map<String, String> inputs;
    
    /**
     * 查询文本
     */
    private String query;
    
    /**
     * 会话ID，用于保持对话上下文
     */
    private String conversation_id;
    
    /**
     * 文件列表，用于多模态对话
     */
    private List<FileParam> files;
    
    /**
     * 文件参数定义
     */
    @Data
    @Builder
    public static class FileParam {
        /**
         * 文件类型，如image、audio等
         */
        private String type;
        
        /**
         * 传输方法，如local_file、remote_url等
         */
        private String transfer_method;
        
        /**
         * 文件URL，当transfer_method为remote_url时使用
         */
        private String url;
    }
}
